package Leetcode;

import java.util.Arrays;

/**
 * @ Author     ：侯耀祖
 * @ Description：
 */
public class setZeroes {
//    public static int[][] dir ={{0,1},{1,0},{-1,0},{0,-1}};
//    public void dfs(boolean[][] visited, int[][] matrix, int x, int y) {
//        visited[x][y] = true;
//        for (int i = 0; i < 4; i++) {
//            int nextX = x + dir[i][0];
//            int nextY = y + dir[i][1];
//            if (nextX < 0 || nextY < 0 || nextX >= matrix.length || nextY >= matrix[0].length){
//                continue;
//            }
//            if (!visited[nextX][nextY] && matrix[nextX][nextY] != 0){
//                matrix[nextX][nextY] = 0;
//                dfs(visited, matrix, nextX, nextY);
//            }
//        }
//    }
    public void setZeroes(int[][] matrix) {
        int rows = matrix.length;
        int cells = matrix[0].length;
        boolean firstRow = false;
        boolean firstCell = false;
        for (int i = 0; i < cells; i++) {
            if (matrix[0][i] == 0) {
                firstRow = true;
                break;
            }
        }
        for (int i = 0; i < rows; i++) {
            if (matrix[i][0] == 0) {
                firstCell = true;
                break;
            }
        }
        for (int i = 1; i < rows; i++) {
            for (int j = 1; j < cells; j++) {
                if (matrix[i][j] == 0){
                    matrix[i][0] = 0;
                    matrix[0][j] = 0;
                }
            }
        }
        for (int i = 1; i < rows; i++) {
            for (int j = 1; j < cells; j++) {
                if (matrix[i][0] == 0 || matrix[0][j] == 0){
                    matrix[i][j] = 0;
                }
            }
        }
        if (firstRow){
            Arrays.fill(matrix[0], 0);
        }
        if (firstCell){
            for (int i = 0; i < rows; i++) {
                matrix[i][0] = 0;
            }
        }
    }
}
